package com.skyline.search.index;

import org.apache.lucene.document.Document;

/**
 * Class <code>Indexer</code> 用户可以通过Indexer类来进行查询
 * 
 * @author Jairus Chan
 * @version 0.1, 11/30/10
 */

public interface Indexer {

	/**
	 * inital(String,int) 对Indexer进行初始化
	 * 
	 * @param indexPath
	 *            表示这个Indexer的indexPath,bathdocs表示最大批处理的文档数
	 * @return
	 */
	public void inital(String indexPath, int bathdocs);

	/**
	 * createIndex(Document d) 创建索引
	 * 
	 * @param d
	 *            为新索引的第一个文档
	 * @return
	 */
	public void createIndex(Document d);

	/**
	 * addDocument(Document d) 对这个index增加一个document
	 * 
	 * @param d
	 *            所增加的文档
	 * @return
	 */
	public void addDocument(Document d);

	/**
	 * deleteDocument(int docID) 对这个index删除指定的文档
	 * 
	 * @param docID
	 *            表示所需删除的文档的文档号
	 * @return
	 */
	public void deleteDocument(int docID);

	/**
	 * deleteDocuments(String key, String value) 对这个index删除指定的文档
	 * 
	 * @param key，value 
	 *            表示删除的文档的key为value
	 * @return
	 */
	public void deleteDocuments(String key, String value);

	/**
	 * modifyDocument(Document d) 对Document d进行修改,lucene没有实现修改的功能，
	 * 所以就就先根据文档的id删除，然后再添加
	 * 
	 * @param d
	 *            表示所需修改的文档
	 * @return
	 */
	public void modifyDocument(Document d);

	/**
	 * optimize() 对索引进行优化
	 * 
	 * @param
	 * @return
	 */
	public void optimize();

}
